Oracle 创建PDB
1. 创建PDB
1 文件系统创建pdb
- 创建语句
create pluggable database salesppdb
admin user sales identified by foo
FILE_NAME_CONVERT= ('/u01/app/oracle/oradata/CDB/pdbseed','/u01/app/oracle/oradata/CDB/salespdb');
在OMF 打开的情况下无需设置FILE_NAME_CONVERT
- OMF 下的创建PDB
create pluggable database salesppdb
admin user sales identified by foo
2 本地克隆创建PDB
- 关闭被克隆的PDB
alter pluggable database SALESPPDB close;
- 打开为READ ONLY状态
alter pluggable database SALESPPDB open read only;
注意:
如果是RAC其他节点上的本PDB都要关闭
-非OMF方式创建
create pluggable database SALESPPDB2
from SALESPPDB
FILE_NAME_CONVERT=('/u01/app/oracle/oradata/CDB/salespdb',/u01/dbfile/CDB/salespdb2')
- OMF 方式创建
create pluggable database SALESPPDB2
from SALESPPDB
说明:
本地方式创建的PDB不会自动open
3 远程克隆创建PDB
- 创建语句
create database link SALESPPDB connect to system identified by oracle using '192.168.1.111:1521/pdb1';
说明:
PDB1 是指 ORACLE数据库的PDB监听。可以通过lsnrctl status 查询
用户需要DBA权限。这里直接用SYSTEM用户
- 登陆远程PDB
sqlplus sys/oracle@192.168.1.111:1521/pdb1 as sysdba
- 启动PDB到read only 状态
alter pluggable database pdb1 close immediate;
alter pluggable database pdb1 open read only;
- 启动克隆
create pluggable database pdb1
from PDB1@dbverify;
4 克隆非CDB数据库方式
• 使用DBMS_PDB软件包生成元数据,然后使用SQL命令CREATE PLUGGABLE DTABASE 创建可拔插数据库;
• 数据泵(使用可传输表空间功能);
• Goldengate 复制软件
- 切换CDB数据到只读模式
SQL> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
alter database open read only;
- 创建一个描述这个非CDB数据库结构的XML文件
begin
dbms_pdb.describe(pdb_descr_file => '/home/oracle/ncdb.xml');
END;
/
- 检查兼容性
set serveroutput on
declare
hold_var boolean;
begin
hold_var := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file=>'/home/oracle/ncdb.xml');
if hold_var then
dbms_output.put_line('YES');
else
dbms_output.put_line('NO');
end if;
end;
/
- 查询报错原因
set linesize 350
col TIME FOR A30
col CAUSE FOR A10
col ACTION FOR A40
COL MESSAGE FOR A40
col name for a20
select NAME,CAUSE,STATUS,MESSAGE,ACTION from pdb_plug_in_violations
- 依据模板创建PDB
CREATE PLUGGABLE DATABASE NOCDB
USING '/home/oracle/ncdb.xml'
COPY
FILE_NAME_CONVERT = ('/u01/dbfile/dk/','/u01/dbfile/CDB/dkpdb/');
- 创建PDB
sqlplus sys/foo@'speed2:1521/dkpdb' as sysdba
@?/rdbms/admin/noncdb_to_pdb.sql
- 插入PDB
- 关闭PDB
alter pluggable database SALESPPDB close immediate;
- 生成PDB描述文件
alter pluggable database SALESPPDB unplug into '/home/oracle/SALESPPDB.xml';
- 检查兼容性
set serveroutput on
declare
hold_var boolean;
begin
hold_var := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file=>'/home/oracle/SALESPPDB.xml');
if hold_var then
dbms_output.put_line('YES');
else
dbms_output.put_line('NO');
end if;
end;
/
- 插入PDB
create pluggable database SALESPPDB
using '/home/oracle/SALESPPDB.xml'
COPY
FILE_NAME_CONVERT=('/u01/app/oracle/oradata/CDB1/SALESPPDB,'/u01/dbfile/CDB2/SALESPPDB)